package cn.source.zk.domain.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.*;
import java.time.LocalDateTime;

/**
 * 电力系统基础数据实体类
 * 对应数据库表：db_basedata
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "db_basedata")
public class DbBaseData {

    // -------------------- 基础参数 --------------------
    @Id
    @Column(name = "XH")
    private Integer xh;  // 序号（数据记录的唯一编号或设备通道编号）

    @Column(name = "tdGuid", length = 255)
    private String tdGuid;  // 唯一标识符（如设备ID或数据记录的唯一标识）

    @Column(name = "timedate")
    private LocalDateTime timedate;  // 数据记录的时间戳

    // -------------------- 电压相关 --------------------
    @Column(name = "ua")
    private Double ua;  // A相电压（单位：V）
    @Column(name = "ub")
    private Double ub;  // B相电压（单位：V）
    @Column(name = "uc")
    private Double uc;  // C相电压（单位：V）
    @Column(name = "Uab")
    private Double uab;  // AB线电压（单位：V）
    @Column(name = "Ubc")
    private Double ubc;  // BC线电压（单位：V）
    @Column(name = "Uca")
    private Double uca;  // CA线电压（单位：V）
    @Column(name = "u0")
    private Double u0;  // 零序电压（单位：V，用于三相不平衡分析）
    @Column(name = "u1")
    private Double u1;  // 正序电压（单位：V）
    @Column(name = "u2")
    private Double u2;  // 负序电压（单位：V）
    @Column(name = "bphU")
    private Double bphU;  // 电压不平衡度（三相电压不平衡率）

    // -------------------- 电流相关 --------------------
    @Column(name = "ia")
    private Double ia;  // A相电流（单位：A）
    @Column(name = "ib")
    private Double ib;  // B相电流（单位：A）
    @Column(name = "ic")
    private Double ic;  // C相电流（单位：A）
    @Column(name = "i0")
    private Double i0;  // 零序电流（单位：A，用于接地故障分析）
    @Column(name = "i1")
    private Double i1;  // 正序电流（单位：A）
    @Column(name = "i2")
    private Double i2;  // 负序电流（单位：A）
    @Column(name = "bphI")
    private Double bphI;  // 电流不平衡度（三相电流不平衡率）

    // -------------------- 功率与能量 --------------------
    @Column(name = "p")
    private Double p;  // 总有功功率（单位：kW）
    @Column(name = "q")
    private Double q;  // 总无功功率（单位：kvar）
    @Column(name = "Pa")
    private Double pa;  // A相有功功率（单位：kW）
    @Column(name = "Pb")
    private Double pb;  // B相有功功率（单位：kW）
    @Column(name = "Pc")
    private Double pc;  // C相有功功率（单位：kW）
    @Column(name = "Qa")
    private Double qa;  // A相无功功率（单位：kvar）
    @Column(name = "Qb")
    private Double qb;  // B相无功功率（单位：kvar）
    @Column(name = "Qc")
    private Double qc;  // C相无功功率（单位：kvar）
    @Column(name = "Sa")
    private Double sa;  // A相视在功率（单位：kVA）
    @Column(name = "Sb")
    private Double sb;  // B相视在功率（单位：kVA）
    @Column(name = "Sc")
    private Double sc;  // C相视在功率（单位：kVA）

    // -------------------- 频率与谐波 --------------------
    @Column(name = "freq")
    private Double freq;  // 电网频率（单位：Hz，中国标准为50Hz）
    @Column(name = "vun")
    private Double vun;  // 电压谐波总畸变率（THD-V）
    @Column(name = "vin")
    private Double vin;  // 电流谐波总畸变率（THD-I）
    @Column(name = "pcUa")
    private Double pcUa;  // A相电压谐波含有率（如3次、5次谐波占比）
    @Column(name = "pcUb")
    private Double pcUb;  // B相电压谐波含有率
    @Column(name = "pcUc")
    private Double pcUc;  // C相电压谐波含有率
    @Column(name = "pcFreq")
    private Double pcFreq;  // 频率谐波分量（如谐波频率偏差）

    // -------------------- 其他参数 --------------------
    @Column(name = "cos")
    private Double cos;  // 总功率因数（范围：-1~1）
    @Column(name = "PF")
    private Double pf;  // 总功率因数（可能与cos字段重复）
    @Column(name = "PFa")
    private Double pfA;  // A相功率因数
    @Column(name = "PFb")
    private Double pfB;  // B相功率因数
    @Column(name = "PFc")
    private Double pfC;  // C相功率因数
    @Column(name = "Cosa")
    private Double cosa;  // A相功率因数（可能与PFa重复）
    @Column(name = "Cosb")
    private Double cosb;  // B相功率因数（可能与PFb重复）
    @Column(name = "Cosc")
    private Double cosc;  // C相功率因数（可能与PFc重复）

    // -------------------- 设备自定义参数 --------------------
    @Column(name = "fanUab")
    private Double fanUab;  // AB相分相电压（单位：V，可能为设备自定义参数）
    @Column(name = "fanUbc")
    private Double fanUbc;  // BC相分相电压（单位：V）
    @Column(name = "fanUca")
    private Double fanUca;  // CA相分相电压（单位：V）
    @Column(name = "fanIa")
    private Double fanIa;  // A相分相电流（单位：A）
    @Column(name = "fanIb")
    private Double fanIb;  // B相分相电流（单位：A）
    @Column(name = "fanIc")
    private Double fanIc;  // C相分相电流（单位：A）

    // -------------------- 电压波动与闪变 --------------------
    @Column(name = "bdUa")
    private Double bdUa;  // A相电压偏差（可能为电压波动参数）
    @Column(name = "bdUb")
    private Double bdUb;  // B相电压偏差
    @Column(name = "bdUc")
    private Double bdUc;  // C相电压偏差
    @Column(name = "psta")
    private Double psta;  // A相短时闪变（Pst）
    @Column(name = "plta")
    private Double plta;  // A相长时闪变（Plt）
    @Column(name = "pstb")
    private Double pstb;  // B相短时闪变
    @Column(name = "pltb")
    private Double pltb;  // B相长时闪变
    @Column(name = "pstc")
    private Double pstc;  // C相短时闪变
    @Column(name = "pltc")
    private Double pltc;  // C相长时闪变

    // -------------------- 中性线参数 --------------------
    @Column(name = "PcaN")
    private Double pcaN;  // 中性线相关参数（如中性线功率）
    @Column(name = "PcbN")
    private Double pcbN;  // 中性线相关参数
    @Column(name = "PccN")
    private Double pccN;  // 中性线相关参数
    @Column(name = "PcaP")
    private Double pcaP;  // 中性线相关参数（可能为正向/反向功率）
    @Column(name = "PcbP")
    private Double pcbP;  // 中性线相关参数
    @Column(name = "PccP")
    private Double pccP;  // 中性线相关参数
}